#ifndef PROGRAMMECPP_H
#define PROGRAMMECPP_H

/*!
 * \file programmecpp.h
 * \brief Classe qui représente un programme au sens C++, et contient des fonctions C++, elle permet d'enregistrer le fichier.cpp
 * \author bruneau-hay
 * \version 0.1
 */


#include "fonctioncpp.h"

using namespace std;

class programmecpp
{
private :
	string nom_ficcpp; /*nom du fichier c++ qu'on crééra*/
	vector<fonctioncpp> vect_fonction; /*Vecteur qui contient les fonctioncpp (main + autres)*/
	int Validity; /*Valeur de validité du programme*/
	bool silencieux; /*Valeur de silence*/
public:
	/*!
     *  \brief Constructeur vide
     */
	programmecpp();
	
	/*!
     *  \brief Constructeur
     *
     *  Constructeur d'un objet programmecpp avec un nom et une valeur de silence
     *  lecture
     *
     *  \param name : le nom du fichier cpp
	 *  \param silt : silencieu ou pas
     */
	programmecpp(string name, bool silt = false);
	
	/*!
     *  \brief Ajout d'une fonctioncpp (liste de chaine_instruction c++ )
     *
     *  \param F : fonctioncpp à ajouter
     */
	void addFonctionCPP(const fonctioncpp & F);
	
	/*!
     *  \brief Créé et remplie le fichier c++ name
     *
     *  La fonction créé un fichier à partir de nom_ficcpp et le remplit avec les chaine_instructions contenues dans les fonctioncpp
     *
     */
	void streamize();
	
	/*!
     *  \brief Compile le fichier c++ créé
     *
     *  Compile le fichier c++ créé par appel à gcc -o ...
     */
	void compile();
};

#endif // PROGRAMMECPP_H
